﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace Biblioteca.Usuario
{
    public partial class ModUsuario : Form
    {
        ClassDB GenClassBD;
       

        //esto va si o si...
        private static ModUsuario formInstancia = null;
        BindingSource miBS;
       


        public static ModUsuario Instancia()
        {
            if ((formInstancia == null) || (formInstancia.IsDisposed == true))
            {
                formInstancia = new ModUsuario();
            }
            formInstancia.BringToFront();
            return formInstancia;
        }
        
        public ModUsuario()
        {
            InitializeComponent();
            miBS = new BindingSource();
            GenClassBD = new ClassDB();
            //esto hacemos para llenar el combobox con los usuarios
            
            comboBoxUsuarios.Items.Clear();
            comboBoxUsuarios.Items.Add("Seleccione un elemento");

            //es apartir de 1 porque agrego el texto antes
                      
            ClassDB comando = new ClassDB();

            miBS = comando.Consulta("Select cod_usuario, (apellido + ', ' + nombre +' - Legajo: ' + CStr(legajo)) as nombre from Usuario where estado = 'Activo' order by apellido ");
            //con este metodo se llena el combobox con los datos de la consulta
            if (miBS.Count >= 0 )
            {
                // con esto enlazo los datos de la consulta con el combo
                comboBoxUsuarios.DataSource = miBS;
                comboBoxUsuarios.ValueMember ="cod_usuario";
                comboBoxUsuarios.DisplayMember = "nombre";
                //esto se hace para que obligue al usuario a elegir a uno
                comboBoxUsuarios.SelectedIndex = -1;
            }
            else
                //esto es por si no devuelve datos
                MessageBox.Show("No se encontraron Datos del Usuario!", "Busqueda de Usuario", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  
        }

        private void buttonBuscar_Click(object sender, EventArgs e)
        {
            labelValor.Text = Convert.ToString(comboBoxUsuarios.SelectedValue);
            miBS = new BindingSource();
            
            if (comboBoxUsuarios.SelectedIndex == -1)
            {
                // esto es por si no selecciona algun elemento del combobox
                 MessageBox.Show("No se selecciono Usuario!", "Seleccione Usuario", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
                else
            {
                ClassDB comando = new ClassDB();
                //se hace el cambio este, xq lo que se hace referencia es un numero
                bindingSourceConsulta = comando.Consulta("Select * from Usuario where cod_usuario = " + Convert.ToInt32(comboBoxUsuarios.SelectedValue));
               //para cada label, se limpia la conexion, se la añade(poniendo el tipo de dato, de donde viene y con que columna hace referencia)

                labelCodigo.Text = Convert.ToString(comboBoxUsuarios.SelectedValue);

                textBoxApellido.DataBindings.Clear();
                textBoxApellido.DataBindings.Add("Text", bindingSourceConsulta, "apellido");
                textBoxApellido.Visible = true;
              
                textBoxNombre.DataBindings.Clear();
                textBoxNombre.DataBindings.Add("Text", bindingSourceConsulta, "nombre");
                textBoxNombre.Visible = true;

                textBoxDomicilio.DataBindings.Clear();
                textBoxDomicilio.DataBindings.Add("Text", bindingSourceConsulta , "domicilio");
                textBoxDomicilio.Visible = true;

                textBoxMail.DataBindings.Clear();
                textBoxMail.DataBindings.Add("Text", bindingSourceConsulta, "mail");
                textBoxMail.Visible = true;

                textBoxLegajo.DataBindings.Clear();
                textBoxLegajo.DataBindings.Add("Text", bindingSourceConsulta, "legajo");
                textBoxLegajo.Visible = true;

                textBoxFijo.DataBindings.Clear();
                textBoxFijo.DataBindings.Add("Text", bindingSourceConsulta, "telefono");
                textBoxFijo.Visible = true;

                textBoxCelular.DataBindings.Clear();
                textBoxCelular.DataBindings.Add("Text", bindingSourceConsulta, "celular");
                textBoxCelular.Visible = true;

            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Principal main = new Principal();
            this.Hide();
            main.Show();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (comboBoxCargo.SelectedItem != null && comboBoxCarrera.SelectedItem != null )
            {
                DialogResult result = MessageBox.Show("Esta seguro que desea Modificar el Usuario", "Modificacion de Usuario", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk);
                if (result == DialogResult.OK)
                {
                    GenClassBD.ModificarRegistroPorClave("Usuario"
                        , "apellido = '" + textBoxApellido.Text + "', nombre = '" + textBoxNombre.Text + "', domicilio = '" + textBoxDomicilio.Text + "', telefono ='" + textBoxFijo.Text + "', celular = '" + textBoxCelular.Text + "', mail = '" + textBoxMail.Text + "', carrera = '" + comboBoxCarrera.SelectedItem + "', legajo = '" + textBoxLegajo.Text + "', cargo = '" + comboBoxCargo.SelectedItem + "'",
                        "nombre = ", Convert.ToInt32(labelCodigo.Text));
                    MessageBox.Show("El Usuario Fue Modificado con Exito!", "Usuario Modificado", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

                }
            }

            else
                MessageBox.Show("Ingrese todos los Datos Requeridos!", "Datos Incorrectos", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
        }
       
        
    }
}
